Cómo configurar el acceso SSH sin usar contraseña

Estos días he estado trabajando con máquinas virtuales basadas en linux (desde un equipo con Windows) y he tenido que introducir cientos de miles de millones las mismas contraseñas, una y otra vez...

Al final, me decidí por configurar el acceso "sin password" (password-less), usando claves públicas generadas con SSH.

A continuación explico cómo generar las claves y cómo configurar PuTTY para conectar con equipos Linux -en este caso, una Raspberry Pi- sin necesidad de introducir el password cada vez.

Generar par de claves

En Windows, puedes generar una clave usando el programa puttygen.exe, que como habrás deducido por el nombre, forma parte del conjunto de utilidades relacionadas con putty, el cliente SSH para Windows.
Puedes descargar PuTTY y PuTTYGen desde la página de descargas de su desarrollador: PuTTY Download Page.
Para generar las claves:
  1. Selecciona el tipo de algorito que va a usarse al generar las claves (por defecto, SSH-2 RSA)
  2. Estableces el número de bits de la clave generada (2048)
  3. Pulsa el botón Generate.

  1. Mueve el puntero del ratón en la zona bajo la barra de progreso para generar aleatoriedad
  2. Una vez generada la clave, establece un comentario que permita identificar la clave.
A continuación guardamos las dos claves generadas.
  1. Pulsa el botón Save public key y selecciona dónde quieres guardar el fichero con la clave pública
  2. Pulsa sobre el botón Save private key y selecciona dónde quieres guardar el fichero con la clave privada

    • La clave privada será tu contraseña, de manera que deberías guardarla en un lugar seguro y protegida con una contraseña (o passphrase).

Copiar clave pública al servidor remoto

Una vez hemos generado el par de claves, debemos copiar la clave pública al servidor remoto, dentro del fichero ~/.ssh/authorized_keys.
  1. Abre una sesión contra el equipo remoto usanto PuTTY
  2. Abre el fichero ~/.ssh/authorized_keys mediante nano ~/.ssh/authorized_keys (si no existe, se abrirá un fichero en blanco)
  3. Copia la clave pública desde PuTTYGen y pégala en nano:
    1. Comprobamos si existe la carpeta .ssh en la carpeta home del usuario mediante ls -la ~
      1. Si no existe, la creamos.
    2. Abrimos el fichero de texto authorized_keys
    3. Pegamos el contenido desde el portapapeles pulsando el botón secundario del mouse.
    4. Guardamos el fichero mediante Ctrl+O
      Observa que se indica que se guarda 1 línea
    5. Salimos de nano mediante Ctrl+X.
    6. Finalmente, comprobamos que el fichero authorized_keys contiene la clave pública copiada (mediante el comando cat authorized_keys).
    7. Cerramos la sesión remota (con exit).

Configurar PuTTY

Ya hemos generado el par de claves -pública y privada-, hemos indicado al servidor remoto que la clave pública que hemos generado es una clave autorizada.
El siguiente paso es configurar PuTTY para que use la clave privada asociada a la clave pública que hemos configurado en el servidor remoto para poder conectarnos sin necesidad de introducir el password.
  1. Abre PuTTY
  2. Selecciona una de las sesiones guardadas y pulsa Load para recargar la configuración
  3. En el panel de la izquierda, navega hasta Connection -> SHH -> Auth.
  4. Pulsa el botón Browse… junto al campo “Private key file for authentication:”
  5. Selecciona el fichero con la clave privada generada anteriormente. No pulses Open
  6. En el panel lateral, selecciona Session
  7. Pulsa Save para guardar las modificaciones a la sesión.

Carpeta .ssh

En los entornos Linux las claves se almacenan en la carpeta -oculta- .ssh dentro de la carpeta personal del usuario. En Windows suele seguirse la misma costumbre, almacenando las claves en la carpeta c:\users\nombre-usuario\.ssh.
No es necesario guardar las claves generadas en esta carpeta.
El Explorador de Windows no permite crear una carpeta cuyo nombre empiece por un punto ., así que tendrás que crear la carpeta desde la línea de comando, usando mkdir .ssh:

Comentarios